package com.zmq.pic.service;

import java.io.Serializable;
import java.util.List;

import com.zmq.pic.common.Page;


/**
 * @Title: CommonServices.java
 * @Package com.teda.services
 * @Description: 公共的Services方法
 * @author 陈希峰 chenxf10@126.com
 * @date 2012-4-8 上午11:41:29
 * @version V1.0
 */
public interface ICommonService<T> {
	/**
	 * 
	 * @Title: save
	 * @author 陈希峰 chenxf10@126.com
	 * @Description: 新增
	 * @param t
	 * @return void
	 * @throws
	 */
	void save(T entity);

	void merge(T entity);
	
	/**
	 * 
	 * @Title: delete
	 * @author 陈希峰 chenxf10@126.com
	 * @Description: 根据主键删除
	 * @param t
	 * @return void
	 * @throws
	 */
	void delete(T entity);

	/**
	 * 
	 * @Title: update
	 * @author 陈希峰 chenxf10@126.com
	 * @Description: 修改
	 * @param t
	 * @return void
	 * @throws
	 */
	void update(T entity);

	/**
	 * 
	 * @Title get
	 * @author 陈希峰 chenxf10@126.com
	 * @Description 根据主键获取唯一的实体
	 * @param id
	 * @return
	 * @return T
	 * @throws
	 */
	T get(Serializable id);

	/**
	 * @Title queryUniqueById
	 * @author 陈希峰 chenxf10@126.com
	 * @Description 根据entity中的ID查询实体
	 * @param entity
	 * @return
	 * @return T
	 * @throws
	 */
	T findById(T entity);

	/**
	 * @Title loadById
	 * @author 陈希峰 chenxf10@126.com
	 * @Description load方法查找对象
	 * @param entity
	 * @return T
	 * @throws
	 */
	T loadById(T entity);

	/**
	 * @Title queryAll
	 * @author 陈希峰 chenxf10@126.com
	 * @Description 查询所有
	 * @return
	 * @return Object
	 * @throws
	 */
	List<T> findAll();

	/**
	 * @Title findByExample
	 * @author 陈希峰 chenxf10@126.com
	 * @Description 根据entity查找跟entity属性相同的实体
	 * @param eitity
	 * @return
	 * @return List<T>
	 * @throws
	 */
	List<T> findByExample(T entity);

	/**
	 * @Title findByExample
	 * @author 陈希峰 chenxf10@126.com
	 * @Description 分页查询
	 * @param eitity
	 * @return
	 * @return List<T>
	 * @throws
	 */
	void findByExample(T entity, Page<T> page);

	/**
	 * @Title findByUnique
	 * @author 陈希峰 chenxf10@126.com
	 * @Description 按属性查找唯一对象,匹配方式为相等.
	 * @param propertyName
	 * @param value
	 * @return
	 * @return T
	 * @throws
	 */
	public T findByUnique(final String propertyName, final Object value);
}
